/*
 * Copyright (C) 2007 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.leo.oplayer.view;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.Contacts;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.CursorAdapter;
import android.widget.Filterable;
import android.widget.TextView;

import com.leo.oplayer.R;
import com.leo.oplayer.dao.DBService;
import com.leo.oplayer.model.WhitePerson;
import com.leo.oplayer.service.CheckAlarm;
import com.leo.oplayer.util.DateUtil;
import com.leo.oplayer.util.PersonUtil;

public class AddWhiteView extends Activity {
	
	private DBService service;
	
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.white_add);

        ContentResolver content = getContentResolver();
        Cursor cursor = content.query(Contacts.People.CONTENT_URI,
                PEOPLE_PROJECTION, null, null, Contacts.People.DEFAULT_SORT_ORDER);
        ContactListAdapter adapter = new ContactListAdapter(this, cursor);

        AutoCompleteTextView textView = (AutoCompleteTextView)
                findViewById(R.id.edit);
        textView.setAdapter(adapter);
        
        service = new DBService(this);
        Button add = (Button) this.findViewById(R.id.addWhitePerson);
        add.setOnClickListener(addListener);
        
        Button send = (Button) this.findViewById(R.id.sendMsg);
//        send.setOnClickListener(new OnClickListener(){
//        	public void onClick(View v){
//        		//发短信测试
//                PendingIntent pi = PendingIntent.getActivity(v.getContext(), 0,
//                        new Intent(), 0);                
////                SmsManager sms = SmsManager.getDefault();
////                sms.sendTextMessage("5556", null, "this is a flash msg test..........", pi, null);  
////                Log.i("sendmsg", "test send msg");    
//                
//                SmsMessage.SubmitPdu pdus = SmsMessage.getSubmitPdu(null, "5554", "abc", false);     
//                //码流：[1, 0, 4, -127, 85, 101, 0, 0, 3, 97, -15, 24]
//                //修改第7位为0x10,标志为闪信
//                byte[] bits = pdus.encodedMessage;
//                bits[7] = (byte)0x10;
//                
//                Log.i("bits", Arrays.toString(bits));
//                
//                ReflectUtil.invoke(SmsManager.getDefault(), "sendRawPdu", new Class[] {byte[].class,byte[].class,PendingIntent.class,PendingIntent.class },
//        				new Object[] {pdus.encodedScAddress,bits, null, pi});
//                 
//        	}
//        });
        
        send.setOnClickListener(new View.OnClickListener(){
        	
			public void onClick(View v) {
				
//				List<WhitePerson> persons = service.searchWhiteList(null);
//				List<String> retPersons = new ArrayList<String>();
//				if(persons != null && !persons.isEmpty()){
//					//轮询白名单
//					for(WhitePerson person : persons){			
//						String latestTime = service.getLatestTime(person.getPersonId());
//						if(latestTime != null){
//							if(DateUtil.overMaxSpan(latestTime.substring(0, 8), 5)){
//								retPersons.add(person.getPersonId());
//							}
//						}
//					}
//				}
//				
//				Log.i("retPersons", "list size:"+retPersons.size());
				
				new AlertDialog.Builder(AddWhiteView.this)
		        .setTitle("温馨提示!!")
		        .setMessage("测试\n测试\n测试\n测试\n测试\n")
		        .setPositiveButton("close",
		         new DialogInterface.OnClickListener()
		        {
		          public void onClick(DialogInterface dialog, int whichButton)
		          {
		            /* 关闭Activity */
//		            AlarmAlert.this.finish();
		          }
		        })
		        .show();
				
			}
        	
        });
    }
    
    private OnClickListener addListener = new OnClickListener(){
    	public void onClick(View v){
    		AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.edit);    		
    		String name = textView.getText().toString();
    		String personId = PersonUtil.findIdByName(v.getContext(), name);
    		service.insertWhite(personId);
    		
    		Intent i = new Intent(v.getContext(), WhiteListView.class);        	
        	startActivity(i);
    	}
    };
    
    

    // XXX compiler bug in javac 1.5.0_07-164, we need to implement Filterable
    // to make compilation work
    public static class ContactListAdapter extends CursorAdapter implements Filterable {
        public ContactListAdapter(Context context, Cursor c) {
            super(context, c);
            mContent = context.getContentResolver();
        }

        @Override
        public View newView(Context context, Cursor cursor, ViewGroup parent) {
            final LayoutInflater inflater = LayoutInflater.from(context);
            final TextView view = (TextView) inflater.inflate(
                    android.R.layout.simple_dropdown_item_1line, parent, false);
            view.setText(cursor.getString(5));
            return view;
        }

        @Override
        public void bindView(View view, Context context, Cursor cursor) {
            ((TextView) view).setText(cursor.getString(5));
        }

        @Override
        public String convertToString(Cursor cursor) {
            return cursor.getString(5);
        }

        @Override
        public Cursor runQueryOnBackgroundThread(CharSequence constraint) {
            if (getFilterQueryProvider() != null) {
                return getFilterQueryProvider().runQuery(constraint);
            }

            StringBuilder buffer = null;
            String[] args = null;
            if (constraint != null) {
                buffer = new StringBuilder();
                buffer.append("UPPER(");
                buffer.append(Contacts.ContactMethods.NAME);
                buffer.append(") GLOB ?");
                args = new String[] { constraint.toString().toUpperCase() + "*" };
            }

            return mContent.query(Contacts.People.CONTENT_URI, PEOPLE_PROJECTION,
                    buffer == null ? null : buffer.toString(), args,
                    Contacts.People.DEFAULT_SORT_ORDER);
        }

        private ContentResolver mContent;        
    }

    private static final String[] PEOPLE_PROJECTION = new String[] {
        Contacts.People._ID,
        Contacts.People.PRIMARY_PHONE_ID,
        Contacts.People.TYPE,
        Contacts.People.NUMBER,
        Contacts.People.LABEL,
        Contacts.People.NAME,
    };
}
